#pragma once

typedef enum StickyTweetsStatusE
{
  StatusFirst = 0,                        //< The first StickyTweets error code

  StatusStOk = StatusFirst,               //< Everything went ok
  StatusStNoLogin,                        //< User hit cancel on Login dialog
  StatusStNewCurrentTimeline,             //< Indicates that the current timeline is in-fact different than the old one
  StatusStNewUserTimeline,                //< Indicates that the user timeline is in-fact different than the old one
  StatusStNewSearch,                      //< Indicates that the search results are different
  StatusStFollowing,                      //< Nice status that lets user know Follow succeeded
  StatusStUnFollowing,                    //< Nice status that lets user know un-Follow succeeded
  StatusStFiltering,                      //< Nice status that lets user know Filter succeeded
  StatusStUnFiltering,                    //< Nice status that lets user know un-Filter succeeded
  StatusStSettingsSave,                   //< Nice status that lets user know settings were saved
  StatusStSettingsSaveRedraw,             //< Settings saved, also redraw timeline
  StatusStSwitchUser,                     //< Switch user
  StatusStSwitchUserCancel,               //< Don't switch user
  StatusStSwitchUserNew,                  //< New user, show login again
  StatusStDmOk,                           //< Successful DM
  StatusStAsync,                          //< Successfully initiated an async operation

  StatusMax,

  WarningFirst = 0x400,

  WarningStTimeline = WarningFirst,       //< Downgraded Error while updating timeline
  WarningStUserTimeline,                  //< Downgraded Error while getting user timeline
  WarningStSearch,                        //< Downgraded Error while searching

  WarningMax,

  ErrorFirst = 0x800,

  // <system>
  ErrorSystemFirst = ErrorFirst,

  ErrorRegCreate = ErrorSystemFirst,      //< Error creating or opening the registry

  ErrorInternetConnection,                //< Not connected to Internet
  ErrorInternetOpen,                      //< Error starting an Internet connection
  ErrorInternetConnect,                   //< Error connecting to twitter.com
  ErrorInternetOpenRequest,               //< Error opening a request to a Twitter URL
  ErrorInternetSendRequest,               //< Error sending request to Twitter
  ErrorInternetQueryStatus,               //< Error retrieving the HTTP status from the response
  ErrorInternetRead,                      //< Error reading response body
  ErrorInternetCrackUrl,                  //< Error retrieving the hostname from a url
  ErrorInternetDownloadResponse,          //< Error getting a response while downloading a file
  ErrorInternetDownloadFile,              //< There was an error downloading a file
  ErrorInternetCreateCache,               //< There was an error creating a new cache entry
  ErrorInternetAsync,                     //< Error setting one or more things for async Internet (callback, event, etc.)

  ErrorXmlParser,                         //< Error creating one of the XML parser COM objects

  ErrorSystemMax,
  // </system>

  // <twitter>
  ErrorTwitterFirst = ErrorSystemMax,

  ErrorTwitterError = ErrorTwitterFirst,  //< Twitter returned an error element
  ErrorTwitterVerify,                     //< Twitter did not verify credentials

  ErrorTwitterMax,
  // </twitter>

  // <tr.im>
  ErrorTrimFirst = ErrorTwitterMax,

  ErrorTrimError = ErrorTrimFirst,        //< There are plenty of tr.im responses, but I'm just not dealing with them yet

  ErrorTrimMax,
  // </tr.im>

  ErrorStTwitterXml,                      //< Twitter returned something other than XML
  ErrorStExtractTwitterError,             //< Twitter sent an error but we couldn't read it
  ErrorStEmptyStatus,                     //< The user didn't enter a status
  ErrorStDmUser,                          //< Attempting to DM no one or invalid user
  ErrorStSettingsRefresh,                 //< Invalid value for Refresh setting

  ErrorStUnknown,                         //< Something else happened

  ErrorMax
} StickyTweetsStatus;

